package cn.juque.workflow.service;

import cn.juque.common.base.PageInfo;
import cn.juque.workflow.entity.ProcessInfo;

import java.util.List;
import java.util.Map;

/**
 * @author JUQUE
 * @version 1.0.0
 * <ul>
 *  <li>simple-generator</li>
 *  <li>流程信息</li>
 * </ul>
 * @date 2023-01-27 15:45:40
 **/
public interface IProcessInfoService {

    /**
     * 查询
     *
     * @param processInfo processInfo
     * @return List<ProcessInfo>
     */
    List<ProcessInfo> listInfoWithoutPage(ProcessInfo processInfo);

    /**
     * 分页查询
     *
     * @param pageInfo    pageInfo
     * @param processInfo processInfo
     * @return DataGrid<ProcessInfo>
     */
    List<ProcessInfo> listInfoWithPage(PageInfo pageInfo, ProcessInfo processInfo);

    /**
     * 详情
     *
     * @param id 主键
     * @return ProcessInfo
     */
    ProcessInfo detail(String id);

    /**
     * 保存
     *
     * @param fileName 文件名称
     * @param content  文件内容
     * @return 部署ID
     */
    String saveInfo(String fileName, String content);

    /**
     * 创建流程实例
     *
     * @param processDefinitionKey 流程KEY
     * @param businessKey          业务ID
     * @param initiator            发起人
     * @param variableMap          变量
     * @return 实例
     */
    String createInstance(String processDefinitionKey, String businessKey, String initiator, Map<String, Object> variableMap);

    /**
     * 删除
     *
     * @param ids 主键列表
     */
    void deleteInfo(List<String> ids);
}
